<?
	layout("/inc/layout.html",{title:sysTitle}){
?>

<div id="page-wrapper">
	<!--BEGIN TITLE & BREADCRUMB PAGE-->
	<div id="title-breadcrumb-option-demo" class="page-title-breadcrumb">
		<div class="page-header pull-left">
			<div class="page-title">数据恢复</div>
		</div>
		<ol class="breadcrumb page-breadcrumb pull-left">
			<li><i class="fa fa-home"></i>&nbsp;<a href="main.html">首页</a>&nbsp;&nbsp;<i
				class="fa fa-angle-right"></i>&nbsp;&nbsp;</li>
			<li>大数据仓储&nbsp;&nbsp;<i class="fa fa-angle-right"></i>&nbsp;&nbsp;</li>
			<li class="active">数据恢复</li>
		</ol>

		<div class="clearfix"></div>
	</div>
	<!--END TITLE & BREADCRUMB PAGE-->
	<!--BEGIN CONTENT-->
	<div class="page-content">

		<!-- 索引管理界面 start -->
		<div class="row">
			<div class="col-lg-12">
				<div class="note note-danger">
					<h3 class="box-heading">Tips</h3>
					<p>
		           	1、数据恢复功能仅支持数据备份的文件格式，不支持其他数据格式；
		            </p>
		            <p>
		           	2、数据恢复页面显示最近一次数据恢复信息，如需要查看往期数据恢复记录，请点击"查询所有数据恢复记录"进行查询等操作；
		            </p>
		            <p>
		           	3、大数据量恢复建议在系统空闲的时候进行操作；
		            </p>
				</div>
			</div>
		</div>
		<div class="row mbl">
		   <div class="col-lg-12">
           		<div class="tb-group-actions pull-right">
           			<button class="btn btn-sm btn-pink" onclick="importfrom2('0')">手动刷新</button>
           			<button class="btn btn-sm btn-success" onclick="importfrom2('1')">数据恢复页面</button>
               		<button class="btn btn-sm btn-dark" onclick="importfrom2('2')">查询所有数据恢复记录</button>
               </div>
           </div>
		</div>
		
		<div class="row" id="initrecovery1">
			<div id="initrecovery11">
			</div>
			<div id="initrecovery12">
			</div>
		<!-- 
            <div class="col-lg-4">
                <div class="panel">
                    <div class="panel-heading clearfix"><span class="mts pull-left">期刊论文库（qk）</span>
                    </div>
                    <div class="panel-body">
                    <p style="font-size: 15px;">
                    		仓储库数据总量：99999
                    </p>
                    	<div class="form-group">
                          <label for="exampleInputFile1">#备份文件</label>
                          <input id="exampleInputFile1" type="file" />
                      </div>
                    	<p>
                    		<button class="btn btn btn-grey" onclick="" style="width: 100%;">恢复数据</button>
                    	</p>
                    	<p style="font-size: 15px;color: #458B74;font-weight: bold;">
                    		数据恢复信息（最近一次）：
                    	</p>
                    	<p style="margin-left: 20px;">
                    		恢复数据总量：8888
                    	</p>
                    <p style="margin-left: 20px;">
                    		恢复日期：2017-01-01 23:23:23
                    	</p>
                    </div>
                </div>
            </div>
            <div class="col-lg-4">
                <div class="panel">
                    <div class="panel-heading clearfix"><span class="mts pull-left">期刊论文库（qk）</span>
                    </div>
                    <div class="panel-body">
                    <p style="font-size: 15px;">
                    		仓储库数据总量：99999
                    </p>
                    	<div class="form-group">
                          <label for="exampleInputFile1">#备份文件</label>
                          <input id="exampleInputFile1" type="file" />
                      </div>
                    	<p>
                    		<button class="btn btn btn-grey" onclick="" style="width: 100%;">恢复数据</button>
                    	</p>
                    	<p style="font-size: 15px;color: #458B74;font-weight: bold;">
                    		数据恢复信息（最近一次）：
                    	</p>
                    	<p style="margin-left: 20px;">
                    		恢复数据总量：8888
                    	</p>
                    <p style="margin-left: 20px;">
                    		恢复日期：2017-01-01 23:23:23
                    	</p>
                    </div>
                </div>
            </div>
            <div class="col-lg-4">
                <div class="panel">
                    <div class="panel-heading clearfix"><span class="mts pull-left">期刊论文库（qk）</span>
                    </div>
                    <div class="panel-body">
                    <p style="font-size: 15px;">
                    		仓储库数据总量：99999
                    </p>
                    	<div class="form-group">
                          <label for="exampleInputFile1">#备份文件</label>
                          <input id="exampleInputFile1" type="file" />
                      </div>
                    	<p>
                    		<button class="btn btn btn-grey" onclick="" style="width: 100%;">恢复数据</button>
                    	</p>
                    	<p style="font-size: 15px;color: #458B74;font-weight: bold;">
                    		数据恢复信息（最近一次）：
                    	</p>
                    	<p style="margin-left: 20px;">
                    		恢复数据总量：8888
                    	</p>
                    <p style="margin-left: 20px;">
                    		恢复日期：2017-01-01 23:23:23
                    	</p>
                    </div>
                </div>
            </div>
            -->
        </div>
        <div class="row" id="initrecovery2" hidden="hidden">
	       <div class="row mbl">
	           <div class="col-lg-6">
	          	   <button type="button"  class="btn btn-sm">选择分类：</button>
	               <select id="queryParams" class="btn btn-danger" style="width :140px;">
	                    <option value="-1">全部&nbsp;<span class="caret"></span></option>
	                    </select>
	                   </span>
	                   <button type="button"  class="btn btn-sm btn-success" onclick="list1()">搜索</button>
	           </div>
	           <div class="col-lg-6">
	           <div class="tb-group-actions pull-right"><span>当前共<label id="pageSize"></label>条记录:</span>
	                   <select id="pageNumber" class="table-group-action-input form-control input-inline input-small input-sm mlm" onchange="list1()">
	                       <option value="5">5</option>
	                       <option value="10" >10</option>
	                       <option value="15" selected>15</option>
	                       <option value="25">25</option>
	                       <option value="50">50</option>
	                   </select>&nbsp;
	               </div>
	           </div>
	       </div>
              <table class="table table-hover table-striped table-bordered table-advanced tablesorter mbn">
            <thead>
                <tr>                 
                    <th >序号</th>
                    <th >知识库名称</th>
                    <th >英文名称</th>
                    <th >创建人</th>
                    <th >恢复时间</th>
                    <th >起始Id</th>
                    <th >结束Id</th>
                    <th >仓储库数据总量</th>
                    <th >恢复数据量</th>
                    <th >状态</th>
<!--                     <th >可操作</th> -->
                </tr>
            </thead>
            <tbody id="newspaperls"></tbody>
        </table>
        <div id="dataNull" class="panel-body"
				style="height: 90px; line-height: 50px;" align="center">
				<span class='subtitle' style="font-size: 15px;">数据为空!</span>
		</div>
        <div id="page1" style="text-align: center; margin-top: 20px;"></div>
        </div>
		<!-- 索引管理界面 end -->
  
	</div>

	<!--END CONTENT-->
</div>

<?} ?>
<script>
var cur;
$(function(){
	cur=1;
	init();
	list1(cur);
});
function importfrom2(b){
	if(b == '1'){
		$("#initrecovery2").hide();
		$("#initrecovery1").show();
		init();
	}else if(b == '2'){
		$("#initrecovery1").hide();
		$("#initrecovery2").show();
		list1(1);
	}else if(b == '0'){
		init();
		list1(1);
	}
}
function list1(curr) {
	$.getJSON("./recoveryList.do",{
			page : curr || 1,
			queryParams : $("#queryParams").val(),
			pageNumber : $("#pageNumber").val()
	},
	function(res) {
			var str = '';
			var html='';
			if (res.listsize > 0) {
				$("#dataNull").hide();
			} else {
				$("#dataNull").show();
			}
			$("#newspaperls").html("");
			
			html += '<option value="-1">全部&nbsp;<span class="caret"></span>';
			for ( var i = 0; i < res.classes.length; i++) {
				html += '<option value="';
				html += res.classes[i].nameEn;
				html +='"';
				if($("#queryParams").val() == res.classes[i].nameEn){
					html += ' selected="selected"';
				}
				html += '>';
				html += res.classes[i].nameZh;
				
				html += '&nbsp;<span class="caret"></span></option>';
			}
			
			for ( var i = 0; i < res.listsize; i++) {
				str += "<tr><td align=\"center\"> "
				+ (i + 1)
				+ "</td><td> <label >";
				var split = res.result[i].classesEn.split(";");
				for(var k in split){
					for ( var j = 0; j < res.classes.length; j++) {
						if(split[k] == res.classes[j].nameEn){
							str += res.classes[j].nameZh + ";";
							break;
						}
					}
				}
				str += '</label></td><td><label >'
				+ res.result[i].classesEn
				+ '</label></td><td><label >'
				+ res.result[i].createUser
				+ '</label></td><td><label >'
				+ res.result[i].createTime
				+ '</label></td><td><label >'
				+ res.result[i].dataIdStart
				+ '</label></td><td><label >'
				+ res.result[i].dataIdEnd
				+ '</label></td><td><label >'
				+ res.result[i].repositoryCount
				+ '</label></td><td><label >'
				+ res.result[i].recoveryCount
				+ '</label></td><td>';
				if(res.result[i].status == '0'){
					str += '<button type="button" class="btn btn-blue btn-xs">恢复中...</button>';
				}else{
					str += '<button type="button" class="btn btn-success btn-xs">恢复完成</button>';
				}
				str += '</td></tr>';
				
				
			}
			$("#newspaperls").html(str);
			$("#queryParams").html(html);
		laypage({
			cont : document.getElementById('page1'), //容器。值支持id名、原生dom对象，jquery对象,
			pages : res.pageSize, //总页数
			skip : true, //是否开启跳页
			skin : 'molv', //加载内置皮肤，也可以直接赋值16进制颜色值，如:#c00
			curr : curr || 1,
			last : res.pageSize,
			groups : 6,//连续显示分页数
			jump : function(obj, first) { //触发分页后的回调
				if (!first) { //点击跳页触发函数自身，并传递当前页：obj.curr
					list1(obj.curr);
					var curr = obj.curr;
					curr = obj.curr;
				}
			}
		});
	});
}
function init(){
	$.ajax({
		type : "post",
		url : "./initrecovery.do",
		dataType : "json",
		success : function(rel) {
			var d = eval(rel);
			var data = d[0].list;
			var cus = d[0].customize;
			var html = '';
			var html1 = '';
			for(var i = 0; i< data.length; i++){
				html += '<div class="col-lg-4">';
				html += '<div class="panel">';
				html += '<div class="panel-heading clearfix"><span class="mts pull-left">';
				html += data[i].clazz.nameZh;
				html += '(';
				html += data[i].clazz.nameEn;
				html += ')</span>';
				html += '</div>';
				html += '<div class="panel-body" style="height:300px;">';
				/* html += ' <p style="font-size: 15px;">仓储库数据总量：';
				html += data[i].count;
				html += '</p>'; */
				html += '<div class="form-group">';
				html += '<label for="exampleInputFile1">#备份文件</label>';
				html += '<input id="exampleInputFile_'+ data[i].clazz.nameEn +'" type="file"/> ';
				html += '</div>';
				html += '<p>';
				html += '<button class="btn btn btn-grey" onclick="uploadfile(\''+ data[i].clazz.nameEn +'\');" style="width: 100%;">恢复数据</button>';
				html += '</p>';
				html += '<p style="font-size: 15px;color: #458B74;font-weight: bold;">';
				html += '数据恢复信息（最近一次）：</p>';
				html += '<p style="margin-left: 20px;">';
				html += '恢复数据总量：';
				html += data[i].dataRecovery.recoveryCount==undefined?'0':data[i].dataRecovery.recoveryCount;
				html += '</p>';
				html += '<p style="margin-left: 20px;">恢复日期：';
				html += data[i].dataRecovery.createTime==undefined?'无':data[i].dataRecovery.createTime;
				html += '</p><p style="margin-left: 20px;">状态：';
				html += '<button class="btn btn-sm btn-success" id="'+ data[i].clazz.nameEn +'_progressbar">0%</button>';
				html += '&nbsp;<button class="btn btn-sm btn-success" id="'+data[i].clazz.nameEn +'_pstatus">' + (data[i].dataRecovery.status == undefined?'无':(data[i].dataRecovery.status == '0'?'恢复中...':'恢复完成')) + '</button>';
				html += ' </p></div>';
				html += ' </div>';
				html += ' </div>';
			}
			html1 += '<div class="col-lg-4">';
			html1 += '<div class="panel">';
			html1 += '<div class="panel-heading clearfix"><span class="mts pull-left">自定义恢复</span>';
			html1 += '</div>';
			html1 += '<div class="panel-body" style="height:300px;">';
			html1 += '<div class="form-group">';
			html1 += '<label for="exampleInputFile1">#备份文件</label>';
			html1 += '<input id="exampleInputFile_cus" type="file" />';
			html1 += '</div><button class="btn btn btn-grey" onclick="uploadfile(\'cus\');" style="width: 100%;">恢复数据</button></p>';
			html1 += '<p><p style="font-size: 15px;color: #458B74;font-weight: bold;">';
			html1 += '数据恢复信息（最近一次）：</p>';
			html1 += '<p style="margin-left: 20px;">恢复日期：';
			html1 += (cus[0] == undefined?'无':cus[0].createTime);
			html1 += '</p>';
			html1 += '<p style="margin-left: 20px;">状态：';
			html1 += '<button class="btn btn-sm btn-success" id="cus_progressbar">0%</button>&nbsp;';
			html1 += '<button class="btn btn-sm btn-success" id="cus_pstatus">' + (cus[0] == undefined?'无':(cus[0].status == '0'?'恢复中...':'恢复完成')) + '</button>';
			html1 += '</p></div></div></div>';
			$("#initrecovery12").html(html);
			$("#initrecovery11").html(html1);
		},
		error : function(data) {
			//alert("请求失败");
		}
	});
}
//文件上传
function uploadfile(classesEn) {
	var uploadFile = $("#exampleInputFile_"+classesEn).get(0).files[0]; //获取文件对象
	// FormData 对象
	var form = new FormData();
	form.append("file", uploadFile); // 文件对象
	form.append("classesEn",classesEn);
	$.ajax({
		cache : false,
		type : "POST",
		url : "./uploadRecovery.do",
		contentType : false,
		//contentType设置为false。因为是由<form>表单构造的FormData对象，且已经声明了属性enctype="multipart/form-data"
		//如果不是用<form>表单构造FormData对象,append()的第二个参数应是文件对象，即$('#file')[0].files[0],contentType也要设置为‘false’。
		processData : false,//processData设置为false。因为data值是FormData对象，不需要对数据做处理
		data : form,
		xhr : function() { //获取ajaxSettings中的xhr对象，为它的upload属性绑定progress事件的处理函数
			myXhr = $.ajaxSettings.xhr();
			if (progressFunction && myXhr.upload) { //检查进度函数和upload属性是否存在
				//绑定progress事件的回调函数
				myXhr.upload.addEventListener("progress",
						function(evt){
						if (evt.lengthComputable) {//lengthComputable，表示进度信息是否可用的布尔值；target，对应的 XHR 对象；
								var completePercent = Math.round(evt.loaded / evt.total*100);//loaded:已经接收的字节数；,total:响应数据的预期总字节数，根据 Content-Length 响应头部确定
								$("#"+classesEn+"_progressbar").text("上传进度："+completePercent+"%");
							}
						}, true);
			}
			return myXhr; //xhr对象返回给jQuery使用
		},
		error : function(request) {
			console.log(request);
			layer.msg("请求失败！", {icon: 2});
		},
		success : function(res) {
			//alert(res[0].info);
			if(res[0].info != 'error'){
				layer.msg("上传成功，开始恢复...");
				$("#"+classesEn+"_pstatus").text("恢复中...");
				recovery(res[0].info,classesEn);
			}
		}
	});
}
//进度条控制
function progressFunction(evt) {
	if (evt.lengthComputable) {//lengthComputable，表示进度信息是否可用的布尔值；target，对应的 XHR 对象；
		var completePercent = Math.round(evt.loaded / evt.total*100);//loaded:已经接收的字节数；,total:响应数据的预期总字节数，根据 Content-Length 响应头部确定
		$("#"+type+"_progressbar").text("上传进度："+completePercent+"%");
	}
}
function recovery(filePath,classesEn){
		var url = "";
		if(classesEn == 'cus'){
			url = "./customizeRecovery.do";
		}else{
			url = "./recovery.do";
		}
		$.ajax({
		type : "post",
		url : url,
		dataType : "json",
		data : {
			"filePath":filePath,
			"classesEn":classesEn,
		},
		success : function(rel) {
			var data = eval(rel);
			if(data[0].info == 'success'){
				$("#"+classesEn+"_pstatus").text("恢复成功")
				alert("恢复成功！")
				init();
			}
		},
		error : function(data) {
		}
	});
}
</script>